import request from '@/utils/request'

/**
 * 查询所有用户
 * @returns {Promise} 用户列表
 */
export const getAllUsers = () => {
  return request({
    url: '/user/user/all',
    method: 'post'
  })
}

/**
 * 管理员修改用户信息
 * @param {Object} data - 用户信息
 * @returns {Promise} 更新结果
 */
export const updateUserByAdmin = (data) => {
  return request({
    url: '/user/user/admin/update',
    method: 'post',
    data
  })
}

/**
 * 管理员删除用户
 * @param {number} userId - 用户ID
 * @returns {Promise} 删除结果
 */
export const deleteUserByAdmin = (userId) => {
  return request({
    url: '/user/user/admin/delete',
    method: 'post',
    data: { userId }
  })
}

/**
 * 管理员创建管理员
 * @param {Object} data - 管理员信息
 * @param {string} data.username - 用户名
 * @param {string} data.passwordHash - 密码
 * @param {string} data.email - 邮箱
 * @param {string} data.phoneNumber - 手机号
 * @returns {Promise} 创建结果
 */
export const createAdmin = (data) => {
  return request({
    url: '/user/user/admin/create-admin',
    method: 'post',
    data
  })
}

/**
 * 管理员创建居民用户
 * @param {Object} data - 用户信息
 * @param {string} data.username - 用户名
 * @param {string} data.passwordHash - 密码
 * @param {string} data.email - 邮箱
 * @param {string} data.phoneNumber - 手机号
 * @returns {Promise} 创建结果
 */
export const createResidentUser = (data) => {
  return request({
    url: '/user/user/admin/create',
    method: 'post',
    data
  })
}

/**
 * 获取所有访客记录
 * @returns {Promise} 访客记录列表
 */
export const getAllVisitors = () => {
  return request({
    url: '/user/user/visitor/all',
    method: 'post'
  })
}

/**
 * 审批访客记录
 * @param {Object} data - 审批信息
 * @param {number} data.visitorId - 访客ID
 * @param {string} data.status - 审批状态
 * @returns {Promise} 审批结果
 */
export const approveVisitor = (data) => {
  return request({
    url: '/user/user/visitor/approve',
    method: 'post',
    data
  })
}

/**
 * 删除访客记录
 * @param {number} visitorId - 访客ID
 * @returns {Promise} 删除结果
 */
export const deleteVisitor = (visitorId) => {
  return request({
    url: '/user/user/visitor/delete',
    method: 'post',
    data: { visitorId }
  })
}

/**
 * 获取所有报修请求记录
 * @returns {Promise} 报修请求列表
 */
export const getAllRepairRequests = () => {
  return request({
    url: '/property/repair-requests/selectAll',
    method: 'post'
  })
}

/**
 * 更新报修请求状态
 * @param {Object} data - 报修请求信息
 * @param {number} data.requestId - 请求ID
 * @param {string} data.status - 状态
 * @param {number} data.assignedTo - 分配给谁
 * @param {string} data.resolvedAt - 解决时间
 * @returns {Promise} 更新结果
 */
export const updateRepairRequest = (data) => {
  return request({
    url: '/property/repair-requests/updateRequest',
    method: 'post',
    data
  })
}

/**
 * 获取维修人员列表
 * @returns {Promise} 维修人员列表
 */
export const getRepairWorkers = () => {
  return request({
    url: '/user/user/get-five-users',
    method: 'post'
  })
}

/**
 * 获取所有车位
 * @returns {Promise} 车位列表
 */
export const getAllParkingSpots = () => {
  return request({
    url: '/parking/parking/selectParking',
    method: 'post'
  })
}

/**
 * 获取可用车位
 * @returns {Promise} 可用车位列表
 */
export const getAvailableParkingSpots = () => {
  return request({
    url: '/parking/parking/selectParkingByStatus',
    method: 'post'
  })
}

/**
 * 更新车位信息
 * @param {Object} data - 车位信息
 * @param {number} data.spotId - 车位ID
 * @param {string} data.spotNumber - 车位编号
 * @param {string} data.location - 车位位置
 * @returns {Promise} 更新结果
 */
export const updateParkingSpot = (data) => {
  return request({
    url: '/parking/parking/updateParkingBySpotIdAdmin',
    method: 'post',
    data
  })
}

/**
 * 删除车位
 * @param {number} spotId - 车位ID
 * @returns {Promise} 删除结果
 */
export const deleteParkingSpot = (spotId) => {
  return request({
    url: '/parking/parking/deleteParkingBySpotId',
    method: 'post',
    data: { spotId }
  })
}

/**
 * 新增车位
 * @param {Object} data - 车位信息
 * @param {string} data.spotNumber - 车位编号
 * @param {string} data.status - 车位状态
 * @param {string} data.location - 车位位置
 * @returns {Promise} 创建结果
 */
export const createParkingSpot = (data) => {
  return request({
    url: '/parking/parking/createParking',
    method: 'post',
    data
  })
}

/**
 * 生成费用清单
 * @param {Object} data - 费用信息
 * @param {number} data.userId - 用户ID
 * @param {number} data.periodStart - 开始年份
 * @param {number} data.periodEnd - 结束年份
 * @param {string} data.amount - 金额
 * @param {string} data.status - 状态
 * @param {string} data.dueDate - 截止日期
 * @returns {Promise} 创建结果
 */
export const createPropertyFee = (data) => {
  return request({
    url: '/property/property-fees/save',
    method: 'post',
    data
  })
}

/**
 * 查询所有物业缴费清单
 * @returns {Promise} 物业费清单列表
 */
export const getAllPropertyFees = () => {
  return request({
    url: '/property/property-fees/selectAll',
    method: 'post'
  })
}

/**
 * 查询未缴费居民
 * @returns {Promise} 未缴费居民列表
 */
export const getUnpaidResidents = () => {
  return request({
    url: '/property/property-fees/selectUnpaidResident',
    method: 'post'
  })
}


/**
 * 获取用户总数量
 * @returns {Promise} 用户总数
 */
export const getUserCount = () => {
  return request({
    url: '/user/user/count',
    method: 'post'
  })
}

/**
 * 获取所有维修工人信息
 * @returns {Promise} 工人信息列表
 */
export const getAllWorkers = () => {
  return request({
    url: '/user/user/selectAllWork',
    method: 'post'
  })
}

/**
 * 为所有未缴费居民创建缴费订单
 * @param {Object} data - 缴费信息
 * @param {number} data.periodStart - 开始年份
 * @param {number} data.periodEnd - 结束年份
 * @param {string} data.amount - 金额
 * @param {string} data.dueDate - 截止日期
 * @param {string} data.status - 状态
 * @returns {Promise} 创建结果
 */
export const createAllPropertyFees = (data) => {
  return request({
    url: '/property/property-fees/createAll',
    method: 'post',
    data
  })
}
